Lịch sử Linux

Bài chi tiết: Lịch sử Linux

Các hệ thống Unix trước Linux

Andrew S. Tanenbaum (trái), tác giả của hệ điều hành MINIX, và Linus Torvalds (phải), Là người đầu tiên viết ra Linux kernel

Unix

Bài chi tiết: Unix

Ý tưởng về hệ điều hành Unix được kiến nghị và phát triển tại viện nghiên cứu Bell của công ty AT&T, Mỹ vào năm 1969 bởi Ken Thompson, Dennis Ritchie, Douglas McIlroyJoe Ossanna. Bản đầu tiên của hệ điều hành được ra đời vào năm 1971, tại thời điểm này nó vẫn được viết hoàn toàn bằng ngôn ngữ assemly. Sau đó, vào khoảng năm 1973 Unix được viết lại bằng C bởi Dennis Ritchie (trừ nhân (kernel) và I/O). Lợi ích của việc viết hệ điều hành bằng ngôn ngữ bậc cao là có khả năng mang mã nguồn của hệ sang các nền máy tính khác và biên dịch lại, chính nhờ điều này mà hệ điều hành sẽ có các bản chạy trên các hệ máy tính khác nhau. Vì một trục trặc nhỏ trong hệ thống luật pháp nên bất kỳ ai cũng có thể có được mã nguồn của Unix từ AT&T nếu yêu cầu. Sau đó Unix nhanh chóng phát triển và được sử dụng rộng rãi trong các trường học và doanh nghiệp. Vào năm 1984, Bell Labs bắt đầu bán Unix như một sản phẩm

GNU

Bài chi tiết: GNU
Richard Stallman, GNU Project

Dự án GNU được bắt đầu vào năm 1983 bởi Richard Stallman, với mục đích tạo ra một "Hệ thống phần mềm hoàn chỉnh tương thích với Unix" bao gồm toàn bộ các phần mềm tự do (hay Free Software trong tiếng Anh). Sau đó vào năm 1985, Stallman bắt đầu thành lập Tổ chức phần mềm tự do và viết ra giấy phép chung GNU (GNU General Public License - GNU GPL) vào năm 1989. Khoảng đầu 1990, nhiều chương trình như thư viện, trình biên dịch, trình soạn thảo văn bản, Unix Shell, và một Chương trình quản lý cửa sổ đã ra đời, nhưng các thành phần cấp thấp cần thiết như trình điều khiển thiết bị, daemons, và kernel vẫn chưa hoàn thành. Như vậy một nhu cầu cấp bách lúc đó là cần có một hệ điều hành hoàn chỉnh để có thể chạy các chương trình trên. May thay vào năm 1991, Linus Torvalds tuyên bố rằng ông đang viết một hệ điều hành MINIX (MINIX cũng là một hệ điều hành tương tự Unix) của riêng mình và ông không dự định viết cho riêng mình.

Phải nói thêm rằng từ Free (của thuật ngữ Free Software) trong tiếng Anh có nghĩa là tự do (freedom) hơn là miễn phí (free of charge), chính thuật nghữ free đã gây hiểu lầm rằng tất cả các phần mềm mang cái nhãn free đều miễn-phí.

BSD

Bài chi tiết: BSD

Berkeley Software Distribution (BSD) là tên của một hệ điều hành dẫn xuất từ UNIX được phát hành vào thập niên 1970 từ trường Đại học California tại Berkeley. Tên này cũng được sử dụng cho các bản phân phối sau này.

MINIX

Bài chi tiết: MINIX

MINIX là một hệ điều hành kiểu Unix, được thiết kế vì mục đích giáo dục bởi giáo sư Andrew S. Tanenbaum. Chính MINIX đã là nguồn cảm hứng cho Linus Torvalds để viết Linux. Vào năm 2005, MINIX trở thành một phần mềm tự do. Tên minix là viết tắt của Mini Unix

Nguồn gốc của Linux

Vào năm 1991 trong khi đang học tại University of Helsinki, Torvalds bắt đầu có ý tưởng về một hệ điều hành, hơn nữa ông cũng nhận thấy hạn chế trong giấy phép của MINIX. Nó chỉ cho phép việc sử dụng MINIX trong giáo dục mà thôi. Ông bắt đầu viết nên hệ điều hành riêng của mình.

Torvalds phát triển Linux kernel trên môi trường MINIX, các ứng dụng viết cho MINIX có thể sử dụng trên Linux. Sau đó khi Linux đã "trưởng thành" thì việc phát triển Linux diễn ra ngay trên hệ thống Linux. Các ứng dụng GNU cũng thay thế các thành phần của MINIX, do các lợi ích sử dụng mã nguồn có sẵn một cách tự do từ dự án GNU với một hệ điều hành còn "non nớt".

Tính thương mại và sự phổ biến

Ubuntu, một bản phân phối nổi tiếng của Linux
Bài chi tiết: Linux adoption

Ngày nay, hệ thống Linux đã được sử dụng một cách rộng rãi, từ các hệ thống nhúng đến các siêu máy tính, đã có một chỗ đứng lớn trong thị trường máy chủ. Việc sử dụng các bản phân phối linux ở nhà và doanh nghiệp đang phát triển, kể cả trong các tổ chức địa phương và các tổ chức chính phủ. Chính phủ liên bang Brazill nổi tiếng về những hỗ trợ của họ cho Linux. Có tin tức là quân đội Nga đang xây dựng một bản phân phối Linux cho riêng họ, điều đó đã trở thành hiện thực như dự án G.H.ost. Bang Kerala của Ấn Độ đã buộc tất cả các trường trung học chạy Linux trên máy tính. Trung Quốc sử dụng Linux một cách riêng biệt như một hệ điều hành cho dòng xử lý mang tên Loongson, với mục đích thoát khỏi sự phụ thuộc về công nghệ. Ở Tây Ban Nha, một vài khu vực đã phát triển các bản phân phối Linux cho riêng họ, và được sử dụng rộng rãi trong trường học và các tổ chức. Bồ Đào Nha sử dụng bảng phân phối Caixa Mágica của họ. Pháp và Đức cũng có những bước thực hiện cho việc chấp nhận Linux.

Các bản phân phối Linux đã được cài đặt mặc định trong các dòng máy tính DELL, ASUS,...

Việc phát triển ở hiện tại

Torvalds tiếp tục lãnh đạo việc phát triển nhân. Stallman dẫn đầu Tổ chức Phần Mềm Tự do, lần lượt hỗ trợ các thành phần GNU. Cuối cùng, các cá nhân và các doanh nghiệp phát triển các phần mềm thứ-ba, phi-GNU. Những phần mềm thứ-ba này bao gồm nhiều các kernel-modules, ứng dụng người dùng và các thư viện. Cộng đồng hoặc các nhà cung cấp Linux thực hiện công việc kết hợp và phân phối hạt nhân, các thành phần GNU hoặc phi-GNU, thêm vào chương trình quản lý gói và tạo thành các bản phân phối Linux

[[]]==Thiết kế==Một hệ thống dựa trên Linux là một hệ điều hành kiểu Unix được mô-đun hóa. Các thiết kế của hệ thống này dựa trên một phần của thiết kế Unix nguyên thủy (ra đời vào khoảng 1970 đến 1980), nhưng có sửa đổi lại cho phù hợp. Nhân Linux là hạt nhân linux, công việc của nó là điều khiển tiến trình, mạng, các thiết bị ngoại vị và việc truy hệ thống tập tin. Các trình điều khiển thiết bị cũng được tích hợp trực tiếp vào nhân như một mô-đun được tải lúc hệ thống chạy.

Những dự án riêng biệt giao tiếp với nhân cung cấp nhiều chức năng hệ thống ở mức cao. Không-gian-người-dùng-GNU (the GNU userland) là một thành phần quan trọng của hầu hết các hệ thống dựa trên Linux, nó cung cấp nhiều cài đặt thông dụng của thư việc lập trình C, một Shell phổ biến như BASH, và nhiều công cụ chung Unix. Các giao diện đồ họa người dùng (graphical user interface - GUI) như KDE, Gnome, Xfce, Lxde,... được xây dựng trên hệ thống X Window.

Vài thành phần chính của một hệ thống Linux hoàn chỉnh:

  • Bootloader - như GRUB hoặc LILO. Đây là một chương trình được thực thi bởi máy tính khi nó lần đầu tiên được mở lên, nhiệm vụ của các chương trình này là tải nhân Linux vào bộ nhớ.
  • init. Đây là một tiến trình được khởi động bởi nhân Linux, và là tiến trình gốc trong cây tiến trình, hay nói một cách khác tất cả các tiến trình đều được khởi động thông qua init. Init có nhiệm vụ khởi động các tiến trình như dịch vụ hệ thống, dấu nhắc đăng nhập (bất kể là giao diện đồ họa hay dòng lệnh)
  • Thư viện phần mềm, chứa các tập tin thư viện được sử dụng bởi các tiến trình đang chay. Trên hệ thống Linux, các tập tin thực thi là các tập tin ELF (viết tắt của Executable and Linkable Format - định dạng thực thi được và liên kết được). Các trình liên kết động (Dynamic Linker) quản lý việc sử dụng các thư viện liên kết động. Thư viện phần mềm chung được dùng nhiều nhất trên hệ thống Linux là thư viện ngôn ngữ C của GNU (GNU C Library). Nếu hệ thống được cài đặt cho người dùng tự biên dịch phần mềm, các tập tin header (các tập tin này được viết bởi người lập trình để chứa các tiền khai báo hàm của ngôn ngữ C, ví dụ như stdio.h, đa số chúng có phần mở rộng là.h) sẽ được thêm vào các giao diện mô tả thư viện (Application Binary Interface - ABI).
  • Các chương trình giao diện người dùng như các shell hoặc môi trường cửa sổ.

Giao diện người dùng (viết tắt GUI)

Hệ điều hành Linux
Linux
Bản phân phối Linux
Tổ chức
GNU:
Chương trình quản lý cửa sổ
Giao diện người dùng
CLI · GUI · GNOME · KDE · Xfce · LXDE
Ứng dụng
Nhân vật
Truyền thông
Danh sách
Sắp xếp hệ thống
và đặt trưng
Di động
Các chủ đề khác

Giao diện người dùng bao gồm: shell còn gọi là giao diện dòng lệnh, giao diện đồ họa người dùng, hoặc thông qua điều khiển gắn liền với phần cứng (thường là các hệ thống nhúng). Với các hệ thống để bàn, mặc định giao diên thường là giao diện đồ họa người dùng, mặc dù giao diện dòng lệnh cũng có thể được sử dụng thông qua trình giả lập thiết bị đầu cuối hay các Console ảo. Nhiều thành phần mức thấp của Linux, bao gồm Không-gian-người-dùng-GNU (the GNU userland), sử dụng dòng lệnh hoàn toàn. Giao diện dòng lệnh thường phù hợp cho các công việc tự động ngưng hoặc lặp lại, hay các công việc đòi hỏi giao tiếp với các tiến trình (inter-process communication - IPC).

Một số hệ thống giao diện đồ họa người dùng phổ biến là các môi trường mặt bàn (hay môi trường Desktop - Desktop Environments) như: KDE, GNOME, Unity, Xfce, LXDE. Các giao diện đồ họa người dùng phổ biến đều dựa trên hệ thống X Window

  1. [] (hay gọi đơn giản là "X"). Nó cung cấp giao thức truyền tải mạng tàng hình (network transparency) và cho phép một ứng dụng đồ họa chạy trên một hệ thống được hiển thị trên nhiều thiết bị đầu cuối nơi mà người dùng có thể giao tiếp với ứng dụng.

Các GUI khác có thể đơn giản chỉ là các trình quản lý của sổ, như FVWM, EnlightenmentWindow Maker, nó cung cấp các tính năng tối thiểu để điều khiển các cửa sổ. Các tính năng này bao gồm việc đặt các cửa sổ ở các tọa độ trên màn hình, hiển thị các nút (đóng, thu nhỏ, phục hồi), vẽ các cửa sổ, và giao tiếp với X.

Các môi trường mặt bàn cũng cấp các trình quản lý của sổ được cài đặt theo mặc định như Mutter của Gnome, với KDE là Kwin, Xfce sử dụng xfwm, LXDE thì là Openbox. Tuy nhiên người dùng có thể chọn lại các trình quản lý cửa sổ khác nếu thích.